]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
lookingGlass: Port to paint nodes
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Mon, 29 Jun 2020 21:01:44 +0000 (18:01 -0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 10 Dec 2020 16:15:49 +0000 (16:15 +0000)
Override vfunc_paint_node(), and add paint nodes to the
root node instead of directly calling CoglFramebuffer APIs.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1339>

js/ui/lookingGlass.js

index 109c04631fd38f98bd6f20fd909406f8cd8abd92..728983ea28b14595fa508179ee9149df420c8c6f 100644 (file)
@@ -481,13 +481,16 @@ class RedBorderEffect extends Clutter.Effect {
         this._pipeline = null;
     }
 
-    vfunc_paint(paintContext) {
-        let framebuffer = paintContext.get_framebuffer();
-        let coglContext = framebuffer.get_context();
+    vfunc_paint_node(node, paintContext) {
         let actor = this.get_actor();
-        actor.continue_paint(paintContext);
+
+        const actorNode = new Clutter.ActorNode(actor, -1);
+        node.add_child(actorNode);
 
         if (!this._pipeline) {
+            const framebuffer = paintContext.get_framebuffer();
+            const coglContext = framebuffer.get_context();
+
             let color = new Cogl.Color();
             color.init_from_4ub(0xff, 0, 0, 0xc4);
 
@@ -498,18 +501,28 @@ class RedBorderEffect extends Clutter.Effect {
         let alloc = actor.get_allocation_box();
         let width = 2;
 
+        const pipelineNode = new Clutter.PipelineNode(this._pipeline);
+        pipelineNode.set_name('Red Border');
+        node.add_child(pipelineNode);
+
+        const box = new Clutter.ActorBox();
+
         // clockwise order
-        framebuffer.draw_rectangle(this._pipeline,
-            0, 0, alloc.get_width(), width);
-        framebuffer.draw_rectangle(this._pipeline,
-            alloc.get_width() - width, width,
-            alloc.get_width(), alloc.get_height());
-        framebuffer.draw_rectangle(this._pipeline,
-            0, alloc.get_height(),
-            alloc.get_width() - width, alloc.get_height() - width);
-        framebuffer.draw_rectangle(this._pipeline,
-            0, alloc.get_height() - width,
-            width, width);
+        box.set_origin(0, 0);
+        box.set_size(alloc.get_width(), width);
+        pipelineNode.add_rectangle(box);
+
+        box.set_origin(alloc.get_width() - width, width);
+        box.set_size(width, alloc.get_height());
+        pipelineNode.add_rectangle(box);
+
+        box.set_origin(0, alloc.get_height() - width);
+        box.set_size(alloc.get_width() - width, width);
+        pipelineNode.add_rectangle(box);
+
+        box.set_origin(0, width);
+        box.set_size(width, alloc.get_height() - width);
+        pipelineNode.add_rectangle(box);
     }
 });